package cn.qn.service.article;

import cn.qn.base.BaseQuery;
import cn.qn.base.PageVO;
import cn.qn.dto.article.*;
import cn.qn.exceptions.BizException;

/**
 * @author: Bryant
 * @date: 2019/7/15
 * @description:
 */
public interface ArticleService {
    /**
     * 分页查询文章列表后端系统使用
     * @param query
     * @return
     */
    PageVO<ArticleDTO> pageQueryArticles(ArticleQueryDTO query);

    /**
     * 查询文章详情
     * @param articleId
     * @return
     */
    ArticleDTO queryDetailByArticleId(String articleId);

    /**
     * 发布文章
     * @param dto
     */
    void publishArticle(ArticleAddDTO dto);

    /**
     * 修改文章状态
     * @param articleId
     * @param userName
     */
    void editArticleStatus(String articleId, String userName);

    /**
     * 修改文章置顶状态接口
     * @param articleId
     * @param userName
     */
    void setTopStatusChange(String articleId, String userName);

    /**
     * 删除文章
     * @param articleId
     */
    void deleteArticle(String articleId);

    /**
     * 查询文章
     * @param query
     * @return
     */
    PageVO<AppArticleDTO> pageQueryAppArticles(AppArticleQueryDTO query);


    /**
     * 统计用户发布的文章数量
     * @param userId
     * @return
     */
    Integer countByUserId(String userId);

    /**
     * App用户发布文章
     * @param userId
     * @param vo
     */
    void appPublishArticle(String userId, ArticleAddVo vo);

    /**
     * 点赞文章
     * @param userId
     * @param articleId
     */
    void praiseArticle(String userId, String articleId) throws BizException;
}
